位运算

# 位运算

[TOC]

# 1.二进制中1的个数

# 1.1题目描述

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

# 1.2解法

&:两位都是1则为1,否则为0;

n-1: 1110100-1=1110011;

n&n-1:1110100&1110011=1110000(少了一个1);

一个整数的二进制有多少个1,就可以进行多少次这样的操作。

function NumberOf1(n)
{
    let count=0;
    while(n){
        n=n&(n-1);
        count++;
    }
    return count;
}
1
2
3
4
5
6
7
8
9